package org.lestr.secuel.sogl.lumieres;

import java.util.ArrayList;
import java.util.Collection;

import org.lestr.secuel.m3ds.Variable;
import org.lestr.secuel.m3ds.lumieres.Lumiere;
import org.lestr.secuel.m3ds.lumieres.LumiereEcouteur;


public abstract class SOGLLumiere implements Lumiere {

	
	// Déclaration des attributs
	private int id;
	private String nom;
	private boolean allumée;
	private int rouge;
	private int vert;
	private int bleu;
	private int intensité;
	private double x;
	private double y;
	private double z;
	private Collection<Variable> variables;
	
	
	/** Constructeur */
	public SOGLLumiere(){
		
		// Instanciation des attributs
		this.id = -1;
		nom = "Nouvelle lumière";
		allumée = true;
		rouge = 255;
		vert = 255;
		bleu = 255;
		intensité = 100;
		x = 0;
		y = 0;
		z = 0;
		variables = new ArrayList<Variable>();
		
	}// FIN Constructeur
	
	
	/** Défini l'identifiant de la lumière */
	public void defId(int id){
		
		this.id = id;
		
	}// FIN defId
	
	
	/** Retourne l'identifiant de la lumière */
	public int getId(){
		
		return id;
		
	}// FIN retId
	
	
	/** Défini le nom de la lumière */
	public void setNom(String nom){
		
		this.nom = nom;
		
	}// FIN defNom
	
	
	/** Retourne le nom de la lumière */
	public String getNom(){
		
		return nom;
		
	}// FIN retNom
	
	
	/** Défini les variables de la lumière */
	public void setVariables(Collection<Variable> variables){
		
		this.variables = variables;
		
	}// FIN defVariables
	
	
	/** Retourne les variables de la lumière */
	public Collection<Variable> getVariables(){
		
		return variables;
		
	}// FIN retVariables
	
	
	/** Ajoute un écouteur */
	public void ajoutEcouteur(LumiereEcouteur écouteur){
		
	}// FIN ajoutEcouteur
	
	
	/** Retire un écouteur */
	public void retraitEcouteur(LumiereEcouteur écouteur){
		
	}// FIN retraitEcouteur

	
	/** Allume ou éteint la lumière */
	public void setAllumée(boolean allumée){
		
		this.allumée = allumée;
		
	}// FIN defAllumée
	
	
	/** Retourne vrai si la lumière est allumée */
	public boolean isAllumée(){
		
		return allumée;
		
	}// FIN retEstAllumée
	
	
	/** Défini la couleur de la lumière */
	public void setCouleur(int rouge, int vert, int bleu){
		
		this.rouge = rouge;
		this.vert = vert;
		this.bleu = bleu;
		
	}// FIN defCouleur
	
	
	/** Retourne la composante rouge de la couleur */
	public int getRouge(){
		
		return rouge;
		
	}// FIN retRouge
	
	
	/** Retourne la composante verte de la couleur */
	public int getVert(){
		
		return vert;
		
	}// FIN retVert
	
	
	/** Retourne la composante bleue de la couleur */
	public int getBleu(){
		
		return bleu;
		
	}// FIN retBleu
	
	
	/** Défini l'intensitée de la lumière en pourcents */
	public void setIntensité(int intensité){
		
		this.intensité = intensité;
		
	}// FIN defIntensité
	
	
	/** Retourne l'intensité de la lumière en pourcents */
	public int getIntensité(){
		
		return intensité;
		
	}// FIN retIntensité
	
	
	/** Défini la position X de la lumière */
	public void setX(double x){
		
		this.x = x;
		
	}// FIN defX
	
	
	/** Retourne la position X de la lumière */
	public double getX(){
		
		return x;
		
	}// FIN retX
	
	
	/** Défini la position Y de la lumière */
	public void setY(double y){
		
		this.y = y;
		
	}// FIN defY
	
	
	/** Retourne la position Y de la lumière */
	public double getY(){
		
		return y;
		
	}// FIN retY
	
	
	/** Défini la position Z de la lumière */
	public void setZ(double z){
		
		this.z = z;
		
	}// FIN defZ
	
	
	/** Retourne la position Z de la lumière */
	public double getZ(){
		
		return z;
		
	}// FIN retZ
	

}// FIN Classe
